#include "key.h"

Button board_button; // 板载key PB21
Button key1; // PB24  U22
Button key2; // PA22  U24
Button key3; // PB20  U23
Button key4; // PA25  U25
Button key5; // PB25  U26

extern uint8_t menu_mode; // 菜单模式

void btn0_single_click_handler(Button * btn)
{
  uart0_printf("Button 1: Single Click\n");
  toggle_led_proc();
  if (menu_mode == MENU_PAGE)
  {
    menu_mode = 0;
  }
  else
  {
    uart0_printf("page change!\n");
    menu_mode++;
  }
}

void btn1_single_click_handler(Button * btn)  //U22
{
    //增加量为0.1
    if (menu_mode == 1 && cursor_1 == 1)
    {
        PID_data_array[0][0] += 0.1f; // 增加Yaw_Kp
        uart0_printf("Yaw_kp ++ \n");
        uart0_printf("%.2f \n", PID_data_array[0][0]);
    }
    else if (menu_mode == 1 && cursor_1 == 2)
    {
        PID_data_array[0][1] += 0.1f; // 增加Yaw_Ki
    }
    else if (menu_mode == 1 && cursor_1 == 3)
    {
        PID_data_array[0][2] += 0.1f; // 增加Yaw_Kd
    }
    if (menu_mode == 1 && cursor_1 == 4)
    {
        //增加GWkp
        PID_data_array[1][0] += 0.1f; // 增加GW_Kp
    }
    else if (menu_mode == 1 && cursor_1 == 5)
    {
        PID_data_array[1][1] += 0.1f; // 增加GW_Ki
    }
    else if (menu_mode == 1 && cursor_1 == 6)
    {
        PID_data_array[1][2] += 0.1f; // 增加GW_Kd
    }
/*     if (menu_mode == 1 && cursor_1 == 7)
    {
        //增加基础速度
        base_speed += 10.0f; // 增加基础速度
    }     */
    uart0_printf("Button Single Click\n");
}

void btn2_single_click_handler(Button * btn)  //U24
{
  //减少量为0.1
  if (menu_mode == 1 && cursor_1 == 1)
  {
      PID_data_array[0][0] -= 0.1f; // 减少Yaw_Kp
  }
  else if (menu_mode == 1 && cursor_1 == 2)
  {
      PID_data_array[0][1] -= 0.1f; // 减少Yaw_Ki
  }
  else if (menu_mode == 1 && cursor_1 == 3)
  {
      PID_data_array[0][2] -= 0.1f; // 减少Yaw_Kd
  }
    if (menu_mode == 1 && cursor_1 == 4)
    {
        //减少GWkp
        PID_data_array[1][0] -= 0.1f; // 减少GW_Kp
    }
    else if (menu_mode == 1 && cursor_1 == 5)
    {
        PID_data_array[1][1] -= 0.1f; // 减少GW_Ki
    }
    else if (menu_mode == 1 && cursor_1 == 6)
    {
        PID_data_array[1][2] -= 0.1f; // 减少GW_Kd
    }
/*     if (menu_mode == 1 && cursor_1 == 7)
    {
        //减少基础速度
        base_speed -= 10.0f; // 减少基础速度
    } */
      uart0_printf("Button Single Click\n");
}

void btn3_single_click_handler(Button * btn)  //U23
{
     uart0_printf("Button Single Click\n");
}

void btn4_single_click_handler(Button * btn)  //U25
{
/*      if (car_mode == 0)
    {
        car_mode = 1; // 题目开始运行
    }
    else if (car_mode == 1)
    {
        car_mode = 0; // 题目停止运行
    }    */
     uart0_printf("Button Single Click\n");
}

void btn5_single_click_handler(Button * btn)
{
      if (menu_mode == 0)
    {
        cursor_0++;
        if (cursor_0 == MENU0_CURSORMAX) cursor_0 = 0; // 循环
    }
    else if (menu_mode == 1)
    {
        cursor_1++;
        if (cursor_1 >= MENU1_CURSORMAX) cursor_1 = 1; // 循环
    }
    uart0_printf("Button Single Click\n");
}

void btn5_double_click_handler(Button * btn)
{
    EEPROM_Save();
    buzzer_on();
    uart0_printf("Button double Click\n");
    uart0_printf("Write: %.2f\n", PID_data_array[0][0]);
    uart0_printf("Read: %.2f\n",EEPROM_ReadFloat(YAW_KP_ADDR));
}



void key_init(void)
{
    // Initialize board button
    button_init(&board_button, read_button_gpio, 0, 0); // Pb21 板载按键
    button_attach(&board_button, BTN_SINGLE_CLICK, btn0_single_click_handler);
    button_start(&board_button);

    // Initialize other buttons
    button_init(&key1, read_button_gpio, 0, 1); // Pb24
    button_attach(&key1, BTN_SINGLE_CLICK, btn1_single_click_handler);
    button_start(&key1);

    button_init(&key2, read_button_gpio, 0, 2); // PA22
    button_attach(&key2, BTN_SINGLE_CLICK, btn2_single_click_handler);
    button_start(&key2);

    button_init(&key3, read_button_gpio, 0, 3); // PB20
    button_attach(&key3, BTN_SINGLE_CLICK, btn3_single_click_handler);
    button_start(&key3);

    button_init(&key4, read_button_gpio, 0, 4); // PA25
    button_attach(&key4, BTN_SINGLE_CLICK, btn4_single_click_handler);
    button_start(&key4);

    button_init(&key5, read_button_gpio, 0, 5); // PB25
    button_attach(&key5, BTN_SINGLE_CLICK, btn5_single_click_handler);
    button_attach(&key5, BTN_DOUBLE_CLICK, btn5_double_click_handler);
    button_start(&key5);


}
void key_proc(void)
{
    
}